package com.bto.solar.work.service;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

/**
 * @author 王小波
 * @description:   图片/文件服务
 * @date 2023/7/19 10:32
 */

@Slf4j
@Service
public class BtoImageService {
//    @Autowired
//    private IOrdersService ordersService;
//    @Autowired
//    private IOrderOwnerService orderOwnerService;
//    @Autowired
//    private BtoBusinessFlowService btoBusinessFlowService;
//    @Autowired
//    private IImageCategoryStatusService imageCategoryStatusService;
//    /**
//    *   保存订单照片/文件
//     *  此处时前端上传到七牛云，后端只存储七牛云路径
//    */
//    public void saveOrderImages(Integer orderId, Integer orderStatusId ,Integer taskId , List<OrderImagesDTO> images){
//        List<OrderImagesDTO> orderImagesDTOS = images;
//
//        //如果业务员上传了，个人信息使用授权书，即视为已签署个人信息使用授权书
//        //问题：该授权书的有效性无法判断
//        boolean paperSigned = false;
//        for (OrderImagesDTO orderImagesItem : orderImagesDTOS){
//            if(paperSigned){
//                break;
//            }
//            for (OrderImagesDTO.ImagesDTO image : orderImagesItem.getImages()){
//                if(paperSigned){
//                    break;
//                }
//                //91 : 信息使用授权书
//                //92 : 信息使用授权书（纸质版）
//                if(Arrays.asList(91 , 92).contains(image.getId())){
//                    if(!NullUtils.isEmpty(image.getItems())){
//                        for (OrderImagesDTO.ImagesDTO.ItemsDTO item : image.getItems()){
//                            if(StringUtils.isEmpty(item.getValue())){
//                                break;
//                            }
//                        }
//                        paperSigned  = true;
//                    }
//                }
//            }
//        }
//
//        //如果是 预审信息 任务 并且业务员上传了纸质版个人信息使用授权书，即视为已签署个人信息使用授权书
//        if(BizStageTaskEnum.TASK_YSXX.getTaskId().equals(taskId) && paperSigned){
//            ordersService.lambdaUpdate().eq(Orders::getId , orderId)
//                    .set(Orders::getSignedAt , new Timestamp(System.currentTimeMillis())).update();
//        }
//
//        //检查照片/文件的必传项。对应显示文件 待上传、已完成 提示业务员操作
//        Map<String, String> resMap = validateImagesFormRequire(orderImagesDTOS);
//        boolean imageOk = NullUtils.isEmpty(resMap);
//        //必上传的图片都已经上传了
//        //由于个人信息使用授权书照片不是必须上传的（可以通过法大大签署）
//        Orders order = ordersService.getById(orderId);
//        //签约时间为 null 表示未签约，还需要上传，照片显示未完成
//        if(NullUtils.isNull(order.getSignedAt())){
//            imageOk = false;
//        }
//        orderOwnerService.lambdaUpdate().eq(OrderOwner::getOrderId  ,orderId)
//                .eq(OrderOwner::getStatusId , orderStatusId)
//                .eq(OrderOwner::getTaskId , taskId)
//                .set(OrderOwner::getImages , JSON.toJSONString(orderImagesDTOS))
//                .set(OrderOwner::getImageStatus , imageOk).update();
//    }
//
//
//    /**
//    *  查询任务的影像件信息照片
//    */
//    public JSONObject getOrderTaskImages(Integer orderId, Integer orderStatusId , Integer taskId ){
//        btoBusinessFlowService.bizCategoryOrderStatusTaskRelationshipCheck(null , orderStatusId , taskId);
//
//        OrderOwner orderOwner = orderOwnerService.lambdaQuery()
//                .eq(OrderOwner::getOrderId, orderId)
//                .eq(OrderOwner::getStatusId, orderStatusId)
//                .eq(OrderOwner::getTaskId, taskId).one();
//        JSONObject response = new JSONObject();
//        if(NullUtils.isNotNull(orderOwner) && StringUtils.isNotEmpty(orderOwner.getImages())){
//            response.put("images" , JSONArray.parseArray(orderOwner.getImages() , OrderImagesDTO.class));
//        }
//        //没有上传过影像件信息
//        else {
//            response.put("images" , getOrderStatusImageTemplate(orderStatusId , taskId));
//        }
//        return response;
//    }
//
//
//
//    /**
//    *  从订单images 中查找影像件信息
//    */
//    public List<OrderImagesDTO.ImagesDTO.ItemsDTO> getOrderImageValue(OrderOwner orderOwner , Integer imageId ){
//        String images = orderOwner.getImages();
//        if(StringUtils.isEmpty(images)){
//            throw new BizException("orderOwner  id {}  images 为空" ,orderOwner.getId());
//        }
//
//        List<OrderImagesDTO> orderImages = JSONArray.parseArray(images , OrderImagesDTO.class);
//
//
//        for (OrderImagesDTO orderImagesDTO : orderImages){
//            for (OrderImagesDTO.ImagesDTO image : orderImagesDTO.getImages()){
//                if(image.getId().equals(imageId)){
//                    return image.getItems();
//                }
//            }
//        }
//        throw new BizException("orderOwner images 中没有找到 imageId {}" ,imageId);
//    }
//
//
//    /**
//    * 获取阶段关联的影像信息模板
//     * * 阶段 - 照片分类 - 照片 - 照片item
//    */
//    public List<OrderImagesDTO> getOrderStatusImageTemplate(Integer orderStatusId , Integer taskId){
//        List<OrderImagesDTO> taskImageInfos = imageCategoryStatusService.getOrderStatusTaskImageInfos(orderStatusId, taskId);
//        taskImageInfos.forEach(orderImagesDTO -> orderImagesDTO.getImages().forEach(imagesDTO -> imagesDTO.getItems().forEach(itemsDTO -> {
//            if(NullUtils.isNull(itemsDTO.getId())){
//                imagesDTO.setItems(null);
//            }
//        })));
//        return taskImageInfos;
//    }
//
//    /**
//    *  检查图片表单 必须上传的是否都填了
//    */
//    private  Map<String , String> validateImagesFormRequire(List<OrderImagesDTO> orderImages){
//        Map<String , String> resultMap = new HashMap<String , String> ();
//        orderImages.forEach( orderImagesItem ->{
//            String imageUsedScene = orderImagesItem.getName();
//            orderImagesItem.getImages().forEach( image ->{
//                String imageType = imageUsedScene+":"+image.getName();
//                if(Boolean.TRUE.equals(image.getRequired())){
//                    if(NullUtils.isEmpty(image.getItems())){
//                        resultMap.put(imageType , "未上传照片");
//                    }
//                    else {
//                        image.getItems().forEach(imageItem ->{
//                           if(StringUtils.isEmpty(imageItem.getValue())){
//                               resultMap.put(imageType+":"+imageItem.getAlt() , "未上传照片");
//                           }
//                        });
//                    }
//                }
//            });
//        });
//
//        log.info("必上传照片，检查 {}" , JSON.toJSONString(resultMap));
//        return resultMap;
//
//    }
}
